package net.ericaro.neojavagen.classes;

/**
 * <b>MethodHeader</b> ::= <{@link net .ericaro .neojavagen .packages .JavadocComment JavadocComment}>? <{@link net .ericaro .neojavagen .interfaces .Annotations
 * Annotations}>? <{@link java .util .EnumSet <net .ericaro .neojavagen .classes .MethodModifier > EnumSet}> <
 * {@link net .ericaro .neojavagen .classes .TypeParameters TypeParameters}>? <{@link net .ericaro .neojavagen .classes .TypedMethodDeclarator
 * TypedMethodDeclarator}> <{@link net .ericaro .neojavagen .classes .Throws Throws}>?
 * 
 * @author eric@ericaro.net
 */
public class MethodHeader extends net.ericaro.neojavagen.JavaPartComposition {
	private net.ericaro.neojavagen.interfaces.Annotations annotations;

	private net.ericaro.neojavagen.classes.Throws athrows;

	private java.util.EnumSet<net.ericaro.neojavagen.classes.MethodModifier> enumSet;

	private net.ericaro.neojavagen.packages.JavadocComment javadocComment;

	private net.ericaro.neojavagen.classes.TypedMethodDeclarator typedMethodDeclarator;

	private net.ericaro.neojavagen.classes.TypeParameters typeParameters;

	public MethodHeader(java.util.EnumSet<net.ericaro.neojavagen.classes.MethodModifier> enumSet, net.ericaro.neojavagen.classes.TypedMethodDeclarator typedMethodDeclarator) {
		this.javadocComment = null;
		this.annotations = null;
		this.enumSet = enumSet;
		this.typeParameters = null;
		this.typedMethodDeclarator = typedMethodDeclarator;
		this.athrows = null;
	}

	public MethodHeader(net.ericaro.neojavagen.packages.JavadocComment javadocComment, net.ericaro.neojavagen.interfaces.Annotations annotations, java.util.EnumSet<net.ericaro.neojavagen.classes.MethodModifier> enumSet, net.ericaro.neojavagen.classes.TypeParameters typeParameters, net.ericaro.neojavagen.classes.TypedMethodDeclarator typedMethodDeclarator, net.ericaro.neojavagen.classes.Throws athrows) {
		super();
		this.javadocComment = javadocComment;
		this.annotations = annotations;
		this.enumSet = enumSet;
		this.typeParameters = typeParameters;
		this.typedMethodDeclarator = typedMethodDeclarator;
		this.athrows = athrows;
	}

	public net.ericaro.neojavagen.interfaces.Annotations getAnnotations() {
		return annotations;
	}

	public java.util.EnumSet<net.ericaro.neojavagen.classes.MethodModifier> getEnumSet() {
		return enumSet;
	}

	public net.ericaro.neojavagen.packages.JavadocComment getJavadocComment() {
		return javadocComment;
	}

	public net.ericaro.neojavagen.classes.Throws getThrows() {
		return athrows;
	}

	public net.ericaro.neojavagen.classes.TypedMethodDeclarator getTypedMethodDeclarator() {
		return typedMethodDeclarator;
	}

	public net.ericaro.neojavagen.classes.TypeParameters getTypeParameters() {
		return typeParameters;
	}

	public void setAnnotations(net.ericaro.neojavagen.interfaces.Annotations annotations) {
		this.annotations = annotations;
	}

	public void setEnumSet(java.util.EnumSet<net.ericaro.neojavagen.classes.MethodModifier> enumSet) {
		this.enumSet = enumSet;
	}

	public void setJavadocComment(net.ericaro.neojavagen.packages.JavadocComment javadocComment) {
		this.javadocComment = javadocComment;
	}

	public void setThrows(net.ericaro.neojavagen.classes.Throws athrows) {
		this.athrows = athrows;
	}

	public void setTypedMethodDeclarator(net.ericaro.neojavagen.classes.TypedMethodDeclarator typedMethodDeclarator) {
		this.typedMethodDeclarator = typedMethodDeclarator;
	}

	public void setTypeParameters(net.ericaro.neojavagen.classes.TypeParameters typeParameters) {
		this.typeParameters = typeParameters;
	}

	@Override
	public java.lang.String toString() {
		return print(javadocComment, annotations, enumSet, typeParameters, typedMethodDeclarator, athrows);
	}
}
